/*
 * Copyright (C) 2012 POAS.VSTU
 */

package model;

import sun.reflect.generics.reflectiveObjects.NotImplementedException;

import java.util.ArrayList;
import java.util.List;

/**
 * Отбой
 */
public class CardPileRecycle extends CardPile {
    /**
     * Конструктор по-умолчанию
     */
    public CardPileRecycle() { }

    /**
     * Возвращает все ранги карт из отбоя
     * @return коллекция рангов
     */
    public List<Face> getFaces() {
        List<Face> faces = new ArrayList<Face>();

        for (Card card : mCards) {
            Face cardFace = card.getFace();
            if (!faces.contains(cardFace)) faces.add(cardFace);
        }
        
        return faces;
    }

    /**
     * Добавление 4-х карт в отбой
     * @param cards - карты, помещаемые в стопку
     * @return True - если все хорошо, иначе False
     */
    @Override
    public boolean push(List<Card> cards) {
        if (cards == null)
            throw new NullPointerException("cards");

        if (cards.size() != 4)
            throw new IllegalArgumentException("cards");
        
        Face face = cards.get(0).getFace();
        for (int i = 1; i < cards.size(); i++) {
            if (cards.get(i).getFace() != face)
                throw new IllegalArgumentException("Cards not the same rank");
        }

        // todo create check for the different Suit

        mCards.addAll(cards);
        return true;
    }
    
    public boolean contains(Face face) {
        return this.getFaces().contains(face);
    }
}
